import 'dart:math';

import 'package:flutter/material.dart';
import 'package:get/get.dart';

import 'index.dart';

class DropDownController extends GetxController {
  DropDownController();

  final state = DropDownState();

  void dismiss({int? idx}) {
    Get.back(result: idx);
  }

  void onSure() {
    if (state.current == null) {
      return;
    }
    Get.back(result: state.current);
  }

  /// 在 widget 内存中分配后立即调用。
  @override
  void onInit() {
    super.onInit();
    state.md = Get.arguments;
    if (state.md.list != null) {
      var index = state.md.list!
          .indexWhere((element) => element == state.md.initialVal);
      state.current = index;
      double initScrollOffset = 0;
      if (index > 0 && index < state.md.list!.length) {
        initScrollOffset =
            state.md.itemHeight * min(index, max(state.md.list!.length - 5, 0));
      }
      state.sc = ScrollController(initialScrollOffset: initScrollOffset);
    }
  }

  /// 在 onInit() 之后调用 1 帧。这是进入的理想场所
  @override
  void onReady() {
    super.onReady();
  }

  /// 在 [onDelete] 方法之前调用。
  @override
  void onClose() {
    super.onClose();
  }

  /// dispose 释放内存
  @override
  void dispose() {
    super.dispose();
  }
}
